#include <time.h>
#include "constantes.h"
#include "semaforos.h"

int main(int argc, char *argv[])
{
	char mensaje[120];
	int colaid;
	int shmid;
	m_pedido_precio msgpp;
	key_t clave_cola;
	t_parrilla *shm_ptr;

	clave_cola = ftok(DIRECTORIO, COLA_CL_ENC);

	if ( (colaid = msgget(clave_cola, 0666)) < 0 )						/* Obtengo el ID de la cola */
	{
		sprintf(mensaje, "Error al obtener el ID de la cola Encargado-Ayudante\n");
		write(fileno(stdout), mensaje, strlen(mensaje));

		exit(-1);
	}

	printf("El ID de la cola es: %d \n", colaid);
	
	int nolleno  = getsem(SEM_NOLLENOC);
	int novacio = getsem(SEM_NOVACIOC);
	int mutex = getsem(SEM_PARRILLA);

        key_t clave_shm;
        clave_shm = ftok(DIRECTORIO, SHM_PARRILLA);
        shmid = shmget(clave_shm, sizeof(t_parrilla), 0666);
        shm_ptr = (t_parrilla *) shmat(shmid, NULL, 0);                         /* Obtengo el puntero a la SharedMemory */

	while(1)
	{
		if ( msgrcv(colaid, (m_pedido_precio *) &msgpp, sizeof(m_pedido_precio), MSG_PP, 0) < 0 )			/* Obtengo el pedido de la cola */	
		{
			sprintf(mensaje, "Error al recibir el pedido en Encargado-Ayudante\n");
			write(fileno(stdout), mensaje, strlen(mensaje));

			exit(-1);
		}

		printf("Nro. Cliente: %d\n", msgpp.pp.pedido.nro_cliente);
		printf("Chorizos: %d\n", msgpp.pp.pedido.mitad_chorizo);
		printf("Panes: %d\n", msgpp.pp.pedido.mitad_pan);
		printf("Precio: %d\n\n", msgpp.pp.precio);
		
		int cantidad = msgpp.pp.pedido.mitad_chorizo;

		while( cantidad > 0)
		{
			p(mutex);
			if ( shm_ptr->cant_chorizos = 0)
			{
				v(mutex);
				p(novacio);
				p(mutex);
			}
			cantidad--;
			shm_ptr->cant_chorizos--;
			v(mutex);	
			v(nolleno);
		}
		printf("Ya le prepare %d choris al cliente (%d)\n", msgpp.pp.pedido.mitad_chorizo, msgpp.pp.pedido.nro_cliente);
	}

return 0;
}
